package ar.edu.utn.frba.tacs.warnes.pedido;

import java.util.List;

import ar.edu.utn.frba.tacs.warnes.Venta;
import ar.edu.utn.frba.tacs.warnes.excepciones.SoyUnPedidoVendidoException;
import ar.edu.utn.frba.tacs.warnes.excepciones.YaEstaVendidaException;
import ar.edu.utn.frba.tacs.warnes.pieza.Pieza;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

public class PedidoEfectivoStrategy extends PedidoStrategy {

	private Venta venta;
	
	public Venta getVenta() {
		return this.venta;
	}

	public void setVenta(Venta venta) {
		this.venta = venta;
	}

	/**
	 * Instancia del Strategy que crea una nueva venta y, si puede, vende las piezas.
	 * @param piezas
	 * @throws YaEstaVendidaException
	 */
	public PedidoEfectivoStrategy(List<Pieza> piezas) {
		this.setVenta(ContenedorWarnes.getInstance().nuevaVenta());
		for (Pieza pieza : piezas) {
			this.getVenta().venderPieza(pieza);
		}
	}

	@Override
	public List<Pieza> getPiezas() {
		return this.getVenta().getPiezasVendidas();
	}

	/**
	 * No puedo agregar una pieza a un pedido que ya fue vendido
	 */
	@Override
	public void addPieza(Pieza pieza) {
		 throw new SoyUnPedidoVendidoException();
	}

	@Override
	public boolean estaEfectivizado(){
		return true;	
	}

	public String toString(){
		return "Efectivo";
	}
}
